package org.hibernate.search.test.integration.jbossjta.infra;
import java.sql.SQLException;
import javax.sql.DataSource;
import javax.sql.XADataSource;
import com.arjuna.ats.arjuna.coordinator.TxControl;
import com.arjuna.ats.jdbc.TransactionalDriver;
public class JBossTADataSourceBuilder {
private String user;
private String password;
//by default no timeout
private int timeout = 0;
private XADataSource xaDataSource;
public JBossTADataSourceBuilder setUser(String user) {
this.user = user;
return this;
}
public JBossTADataSourceBuilder setPassword(String password) {
this.password = password;
return this;
}
public JBossTADataSourceBuilder setTimeout(int timeout) {
this.timeout = timeout;
return this;
}
public JBossTADataSourceBuilder setXADataSource(XADataSource xaDataSource) {
this.xaDataSource = xaDataSource;
return this;
}
public DataSource createDataSource() throws SQLException {
TxControl.setDefaultTimeout(timeout);
DataSourceProvider.initialize( xaDataSource );
DataSourceProvider dsProvider = new DataSourceProvider();
final XADataSource dataSource = dsProvider.getDataSource( dsProvider.getDataSourceName() );
XADataSourceWrapper dsw = new XADataSourceWrapper(
dsProvider.getDataSourceName(),
dataSource
);
dsw.setProperty( TransactionalDriver.dynamicClass, DataSourceProvider.class.getName() );
dsw.setProperty( TransactionalDriver.userName, user);
dsw.setProperty( TransactionalDriver.password, password );
return dsw;
}
}